unit UPesquisaPedidoCompra;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, UFormPesquisa, DB, DBTables, StdCtrls, Grids, DBGrids, Buttons,
  ExtCtrls, DBCtrls, Mask, ToolEdit;

type
  TFPesquisaPedidoCompra = class(TFormPesquisa)
    Label1: TLabel;
    EdCodigo: TEdit;
    GBData: TGroupBox;
    Label2: TLabel;
    Label3: TLabel;
    DTData1: TDateEdit;
    DTData2: TDateEdit;
    RBSituacao: TRadioGroup;
    Label5: TLabel;
    DBLCBFornecedor: TDBLookupComboBox;
    Label7: TLabel;
    EdNF: TEdit;
    GroupBox1: TGroupBox;
    Label4: TLabel;
    Label6: TLabel;
    DTData3: TDateEdit;
    DTData4: TDateEdit;
    DSFornecedor: TDataSource;
    procedure DBLCBFornecedorKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure BtnConsultarClick(Sender: TObject);
    procedure BtnLimparClick(Sender: TObject);
    procedure BtnSelecionarClick(Sender: TObject);
    procedure DBGrid1DblClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FPesquisaPedidoCompra: TFPesquisaPedidoCompra;

implementation

uses UPesquisaRapida, UGeral, UPedidoCompraNovo;

{$R *.dfm}

procedure TFPesquisaPedidoCompra.DBLCBFornecedorKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  inherited;
  IF KEY = VK_F8 THEN
  BEGIN

    Application.CreateForm(TFPesquisaRapida,FPesquisaRapida);

    FPesquisaRapida.tipo := 'FORNECEDOR';
    CaPtUrA_pEsQuIsA_rApIdA := '';

    FPesquisaRapida.ShowModal;

    if CaPtUrA_pEsQuIsA_rApIdA <> '' then
      TDBLookupComboBox(Sender).KeyValue := CaPtUrA_pEsQuIsA_rApIdA;

    CaPtUrA_pEsQuIsA_rApIdA := '';

    Exit;

  END;

 case key of
  116 : begin  //f5
           TDBLookupComboBox(Sender).ListSource.DataSet.Close;
           TDBLookupComboBox(Sender).ListSource.DataSet.Open;
          end ;
 end;

 if key = 46 then
   TDBLookupComboBox(Sender).KeyValue := null;

end;

procedure TFPesquisaPedidoCompra.BtnConsultarClick(Sender: TObject);
const ct_Consulta_pedido_Venda = ' SELECT                                                             '+#10+
                                 '         PEDIDO.PED_CODIGO,                                         '+#10+
                                 '         PEDIDO.PED_DATA AS DATA,                                   '+#10+
                                 '         FORNECEDOR.FORN_RAZAO,                                     '+#10+
                                 '         SUM(ITENSPEDIDO.ITENS_PED_VALOR_TOTAL) AS VALOR,           '+#10+
                                 '         COUNT(ITENSPEDIDO.ITENS_PED_VALOR_TOTAL) AS QTD            '+#10+

                                 ' FROM PEDIDO                                                        '+#10+

                                 '         INNER JOIN ITENSPEDIDO ON                                  '+#10+
                                 '                 (ITENSPEDIDO.ITENS_PED_PEDIDO = PEDIDO.PED_CODIGO) '+#10+

                                 '         INNER JOIN FORNECEDOR ON                                   '+#10+
                                 '                 (FORNECEDOR.FORN_CODIGO = PEDIDO.PED_FORNECEDOR)   '+#10+

                                 ' WHERE (PEDIDO.PED_CODIGO > 0) %s                                   '+#10+

                                 ' GROUP BY                                                           '+#10+
                                 '         PEDIDO.PED_CODIGO,                                         '+#10+
                                 '         PEDIDO.PED_DATA,                                           '+#10+
                                 '         FORNECEDOR.FORN_RAZAO                                      '+#10+

                                 ' ORDER BY                                                           '+#10+
                                 '         PEDIDO.PED_CODIGO                                          '+#10;
VAR Filtro : String;
begin

  Filtro := '';

  if trim(EdCodigo.Text) <> '' then
    Filtro := ' AND (PEDIDO.PED_CODIGO = ' +EdCodigo.Text+ ') ';

  if trim(EdNF.Text) <> '' then
    Filtro := ' AND (PEDIDO.PED_NF = ' +QuotedStr(EdCodigo.Text)+ ') ';

  if (DTData1.Date <> 0) and (DTData2.Date <> 0) then
    Filtro := Filtro + ' AND (PEDIDO.PED_DATA BETWEEN ' +QuotedStr(FormatDateTime('mm/dd/yyyy 00:00:00',DTData1.Date))+ ' AND '+
                                                         QuotedStr(FormatDateTime('mm/dd/yyyy 23:59:59',DTData2.Date))+') ';

  if (DTData3.Date <> 0) and (DTData4.Date <> 0) then
    Filtro := Filtro + ' AND (PEDIDO.PED_DATAENTREGA BETWEEN ' +QuotedStr(FormatDateTime('mm/dd/yyyy 00:00:00',DTData1.Date))+ ' AND '+
                                                                QuotedStr(FormatDateTime('mm/dd/yyyy 23:59:59',DTData2.Date))+') ';


  CASE RBSituacao.ItemIndex of
    0: Filtro := Filtro + ' AND (PEDIDO.PED_SITUACAO = 0) ';
    1: Filtro := Filtro + ' AND (PEDIDO.PED_SITUACAO = 1) ';
    2: Filtro := Filtro + ' AND (PEDIDO.PED_SITUACAO = 2) ';
    3: Filtro := Filtro;
  END;

  IF DBLCBFornecedor.KeyValue <> Null then
    Filtro := Filtro + ' AND (PEDIDO.PED_FORNECEDOR = '+ VarToStr(DBLCBFornecedor.KeyValue) +') ';

  QPesquisa.Close;
  QPesquisa.SQL.Clear;
  QPesquisa.SQL.Add(Format(ct_Consulta_pedido_Venda,[filtro]));
  QPesquisa.Open;

  TCurrencyField(QPesquisa.FieldByName('VALOR')).DisplayFormat := '0.,00';
  TDateField(QPesquisa.FieldByName('DATA')).DisplayFormat := 'dd/mm/yyyy';

  BtnSelecionar.Enabled := not(QPesquisa.IsEmpty);

  inherited;

end;

procedure TFPesquisaPedidoCompra.BtnLimparClick(Sender: TObject);
begin
  //inherited;

  EdCodigo.Clear;
  EdNF.Clear;

  DTData1.Date := 0;
  DTData2.Date := 0;
  DTData3.Date := 0;
  DTData4.Date := 0;

  RBSituacao.ItemIndex := 3;

  DBLCBFornecedor.KeyValue := null;

  BtnImprimir.Enabled := False;
  BtnSelecionar.Enabled := False;

end;

procedure TFPesquisaPedidoCompra.BtnSelecionarClick(Sender: TObject);
begin
  inherited;

  FPedidoCompraNovo.dsCadastro.DataSet.Locate('PED_CODIGO',DSPesquisa.DataSet.Fields[0].AsString,[]);
  BtnFechar.Click;

end;

procedure TFPesquisaPedidoCompra.DBGrid1DblClick(Sender: TObject);
begin
  inherited;

  if BtnSelecionar.Enabled then
    BtnSelecionar.Click;

end;

end.
